In einem vorangegangenen Artikel wurde dargestellt, wie sich Bereiche und Container beim Schreiben in Standard Template Library (STL)-Streams problemlos formatieren lassen. Das Schreiben von Bereichen ist mit dem Operator << ganz einfach. Durch range( itFirst, itLast [, formatter]) wird ein Bereich geschrieben, durch container( cont [, formatter]) ein Container. Es kann auch ein Formatter angegeben werden, der jedes Element vor dem Schreiben formatiert. Wenn man keinen Formatter angibt, wird ein Default-Formatter verwendet.
Nun werden wir uns ansehen, wie sich Collections und Collection-Bereiche mit der vertrauten Syntax schreiben lassen. Tabelle A enthält Beispiele für das Schreiben einer Collection:
Ausgabe | Schreibart |
Easily -> 3, collections -> 12, write -> 5 | Default |
Easily -> 3 collections -> 12 write ->5 |
Mit Formatter (Custom Transformation und Custom Writer) |
[Easily] -> [3]; [collections] -> [12]; [write] -> [5]. |
Mit Formatter (Custom Transformation und Custom Writer) |
Key: Easily, Value: 3; Key: collections, Value: 12; Key: write, Value: 5. |
Mit Formatter (Custom Transformation und Custom Writer) |
Word ‚collections‘ appeared 12 time(s); Word ‚write‘ appeared 5 time(s). |
Mit Formatter (Custom Transformation und Custom Writer) |
Word ‚EASILY‘ appeared 3 time(s); Word ‚COLLECTIONS‘ appeared 12 time(s); Word ‚WRITE‘ appeared 5 time(s). |
Mit Formatter (Custom Transformation, Custom Transformer und Custom Writer) |
[1] Word ‚collections‘ appeared 12 time(s); [2] Word ‚write‘ appeared 5 time(s). |
Mit Formatter (Custom Transformation, Custom Transformer und Custom Writer) |
Tabelle A: Schreiben einer Collection
Bei Collections handelt es sich um assoziative Arrays, die einem Wert (z.B. std::map, std::multipap) einen Schlüssel zuordnen. Da die Collections Container sind, könnte man annehmen, dass die Bereichs-/Container-Funktionen auch für Collections anwendbar sind. Betrachten wir jedoch den folgenden Code:
// try to parse a file, and for each word write how many times // it appeared in the file std::map< std::string, int> collWordCounts; // … code std::cout << container( collWordCounts) << std::endl;
Neueste Kommentare
Noch keine Kommentare zu C++: Collections und Collection-Bereiche
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.